# 说明：这个例子展示了如何使用 FewShotPromptTemplate 来构建一个多轮对话的模板，
# 这个模板包含了多个例子，每个例子包含了一个输入和一个输出。
# 关于 FewShotPromptTemplate 的更多信息，请参考：
# 可以预置一些例子，然后在模板中引用这些例子，这样可以更方便地构建多轮对话的模板。

from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate, SystemMessagePromptTemplate
from langchain_ollama import ChatOllama

examples = [
    {
        "input":"北京天气如何？",
        "outputparser":"北京天气很好，阳光明媚。"
    },
    {
        "input":"请问你的名字是什么？",
        "outputparser":"我叫做 Serena。"
    },
    {
        "input":"你能做什么？",
        "outputparser":"我是一个智能助手，可以回答你的问题。"
    },
    {
        "input":"武汉的天气怎么样？",
        "outputparser":"武汉的天气有点差，雾霾很严重，北风5级，有点冷。"
    }
]
example_prompt= PromptTemplate(
    input_variables = ["input", "outputparser"],
    template = "Input: {input} \n Output: {outputparser}"

)

prompt = FewShotPromptTemplate(
    examples=examples,
    example_prompt=example_prompt,
    input_variables=["input"],
    suffix="Input: {input} \n Output："
)

system_message = SystemMessagePromptTemplate.from_template(
    "请确保输出的内容简洁明了，直接回答问题，不要添加任何多余的解释或背景信息。"
)

full_prompt = f"{system_message.format()} \n{prompt.format(input='武汉今天的天气怎么样，你能告诉我吗？')}"


llm = ChatOllama(
    model="llama3",
    temperature=0.5
)



print("Prompt: ", full_prompt)
result = llm.invoke(full_prompt)
print(result.content)

